﻿/**
 * \file Coordonnees.cs
 * \author Nicolas VAILLIET
 * \author Aurelien MADIOT
 * \date 2 janvier 2013
 * \version 1.0
 * \brief Interface de la classe Coordonnee
 * \details Cette classe outil permet d'abstraire l'objet de coordonnées
 * sur la carte. Elle fournit des constructeurs et des accesseurs adaptés.
 * Elle contient également une méthode permettant de calculer la distance entre
 * deux positions repérées par Coordonnées.
 */

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Changes to this file will be lost if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace InterfaceJeu
{
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.Text;
   // using System.Xml.Serialization;

    /**
 * \class Coordonnees
 * \brief Interface de la classe Coordonnee
 * \details Cette classe outil permet d'abstraire l'objet de coordonnées
 * sur la carte. Elle fournit des constructeurs et des accesseurs adaptés.
 * Elle contient également une méthode permettant de calculer la distance entre
 * deux positions repérées par Coordonnées.
 */
	public interface Coordonnees //: IXmlSerializable
	{
		int abscisse { get;set; }   /*! L'abscisse des coordonnées */

		int ordonnee { get;set; }   /*! L'ordonnée des coordonnées */

        /**
         * \fn double distance(Coordonnees c2)
         * \param c2 la deuxieme coordonnee
         * \brief calcul de la distance entre la coordonnee appelante et la deuxieme coordonnee.
         * \return double, la distance obtenue
         * */
        double distance(Coordonnees c2);

        /**
         * \fn int getIndex()
         * \return l'index calculé
         * \brief calcul de l'index d'une coordonnée, 
         * \details c'est-à-dire les coordonnées ramenés au comptage du nombre d'unités de
         * gauche à droite et de haut en bas dans une matrice carrée de côté connu.
         * */
        int getIndex();

        /**
         * \fn bool Equals(Object obj)
         * \return le booleen resultat
         * \brief Redéfinition de Equals pour les coordonnées.
         * */
        bool Equals(Object obj);

        /**
         * \fn int GetHashCode()
         * \return le hashcode resultat
         * \brief Redéfinition de GetHashCode pour les coordonnées.
         * \details Permet l'utilisation directe de hashmaps de coordonnées.
         * */
        int GetHashCode();

	}
}

